package algorithm;

import java.util.Collection;
import java.util.Iterator;
import java.util.Vector;

/**
 * A classification of data, which is essentially a list of inputs.
 * Can be used to hold GUI information if a GUI is created, etc.
 * 
 * @author Dan Avila
 *
 */
public interface Classification extends Iterable<Vector<Double>>{

	/**
	 * Adds an input to this Classification
	 * 
	 * @param input - the input to be added to this classification
	 * @return true if it was added, false otherwise
	 */
	public boolean addInput(Vector<Double> input);
	/**
	 * Adds a list of inputs to the Classification
	 * 
	 * @param input - the list of inputs to be added to this classification.
	 * 
	 * @return true if this classification has changed by a call to this method, false otherwise.
	 */
	public boolean addInputs(Collection<Vector<Double>> input);
	/**
	 * Returns an iterator that allows you to traverse the input vectors of this 
	 * Classification Region.
	 * 
	 * @return the Iterator to navigate the list of inputs that make up this Classification.
	 */
	public Iterator<Vector<Double>> iterator();
}
